bitkeeper revision 1.813 (405da9e9QvkmUOrd9sFqdbbf_bL8tg)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Sun, 21 Mar 2004 14:42:49 +0000 (14:42 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Sun, 21 Mar 2004 14:42:49 +0000 (14:42 +0000)
memory.c:
  Fix L2 refcnt bug.

xen/common/memory.c

index 32acc0ac110160ff4470fd2356c21510c1342431..bf61820af598fbad2c0d391a18743f8cc2114be4 100644 (file)
@@ -829,11 +829,12 @@ static int do_extended_command(unsigned long ptr, unsigned long val)
                                              CHECK_STRICT);
         if ( likely(okay) )
         {
+            invalidate_shadow_ldt();
+            percpu_info[cpu].deferred_ops &= ~DOP_FLUSH_TLB;
+            current->mm.pagetable = mk_pagetable(pfn << PAGE_SHIFT);
+            write_cr3_counted(pagetable_val(current->mm.pagetable));
             put_page_and_type(&frame_table[pagetable_val(current->mm.pagetable)
                                           >> PAGE_SHIFT]);
-            current->mm.pagetable = mk_pagetable(pfn << PAGE_SHIFT);
-            invalidate_shadow_ldt();
-            percpu_info[cpu].deferred_ops |= DOP_FLUSH_TLB;
         }
         else
         {